.. _ecmSxMot_VMoveStart: ecmSxMot_VMoveStart ======================== .. Hint:: :ref:`ECAT_Appendix_00` 사용 가능 SYNOPSIS -------- .. code-block:: none t_cmdidx ecmSxMot_VMoveStart(_FF)( t_i32 NetID, t_i32 Axis, t_i32 Dir, t_i32 *ErrCode ) DESCRIPTION ----------- - 작업속도까지 가속한 후에 작업속도를 유지하며 정지 함수가 호출될 때까지 지정한 방향으로의 모션을 계속 수행합니다. - 이 함수는 모션을 시작시킨 후에 바로 반환됩니다. PARAMETER --------- - NetID : Network 번호 - Axis : 대상 축 번호. - :ref:`Dir ` : 모션 이송 방향을 설정합니다. - ErrCode : 이 매개 변수를 통하여 현재의 에러 코드를 반환합니다. 단, 이 매개 변수에 NULL을 전달하면 에러 코드를 반환하지 않습니다. RETURN VALUE ------------ - 이 함수는 CmdIdx를 반환합니다. CmdIdx는 ComiECAT SDK라이브러리에서 발생시킨 명령들의 일련 번호입니다. 단, 이 값이 0이면 함수의 수행이 실패했음을 의 미합니다.의미합니다. EXAMPLE ````````````` .. code-block:: cpp :linenos: // 다음의 예제는 "Jog 이동"을 하는 예입니다. 본 예제에서의 //"Jog 이동"은 버튼이 눌려진 상태에서는 Axis0축의 이동을 //수행하다가, 버튼이 풀리면 이동을 멈추는 예입니다. #include "ComiEcatSdk_Api.h" #define AXIS0 0 t_32 Error_Num = 0;//함수 별 에러 코드 저장 변수 /*************************************************************** * OnProgramInitial : 이 함수는 가상의 함수로서 프로그램 초기화 루틴이 * 적용되는 부분을 의미합니다. //5~9장 사이 내용 참고 ***************************************************************/ void OnProgramInitial() { TEcDevInfo Device_Info; //디바이스 정보 저장 할 구조체 t_i32 Device_Num = 0; t_success nIsLoaded = ecDll_Load (); if(!ecGn_LoadDevices(&Error_Num)){ //장치 로드 //로드 실패시 예외 처리 } if(!ecGn_GetDevInfo(Device_Num,&Device_Info, &Error_Num)){ //디바이스 정보 로드 실패 시 예외 처리 } ecNet_SetAlState(Device_Info.NetIdx, ecAL_STATE_OP, &Error_Num); //ALState OP모드로 전환 ecmSxCtl_SetSvon(Device_Info.NetIdx, AXIS0, &Error_Num); } //OnProgramInitial 함수 끝 /******************************************************************** * OnMoveSetting : 이 함수는 이동을 위한 준비 단계 함수 * ecmSxCfg_SetMioProp, ecmSxCfg_SetSpeedPatt, ecmSxCfg_SetJerkRatio ecmSxCfg_SetUnitDist, ecmSxCfg_SetUnitSpeed 를 이용하여 세팅 * 많은 세팅 관련 함수가 있지만 경우에 따라 사용자가 선택해서 사용 *********************************************************************/ void OnMoveSetting () { ecmSxCfg_SetMioProp(Device_Info.NetIdx, AXIS0, propID, propID, &Error_Num) //모션 입출력 신호 환경설정 (관련 함수 설명 참고) t_i64 UnitDist = //논리적 거리를 1 을 이동하기 위해 출력되어져하는 펄수 수 지정 ecmSxCfg_SetUnitDist( Device_Info.NetIdx, AXIS0, UnitDist , &Error_Num); t_f64 UnitSpeed = //단위 속도에 대한 펄스 출력 소도 설정 값 ecmSxCfg_SetUnitSpeed([Device_Info.NetIdx, AXIS0, UnitSpeed, &Error_Num); /* t_f64 VIni = 0//초기 속도 설정 및 반환 값 t_f64 Vend = 0// 종료 속도 설정 및 반환 값 t_f64 VWork = 40000//작업 속도에 대한 설정 및 반환 값 t_f64 Acc = 10000//가속도에 대한 설정 및 반환 값 t_f64 Dec – 10000//감속도에 대한 설정 및 반환값 Speed 설정 관련 매개 변수 값 */ ecmSxCfg_SetSpeedPatt(Device_Info.NetIdx, AXIS0, 0, 0, 40000, 10000, 10000, &Error_Num ); t_f64 JerkTimeRatio = 1.0 //Jeck 값 ecmSxCfg_SetJerkRatio (Device_Info.NetIdx, AXIS0, JerkTimeRatio, &Error_Num); } /************************************************************** * OnPlusButtonDown() : (+)Move 버튼이 눌렸을 때 호출되는 가상의 함수 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다. **************************************************************/ void OnPlusButtonDown () { ecmSxMot_VMoveStart(Device_Info.NetIdx, AXIS0, ecmDIR_P, &Error_Num); //Positive dir V-MOVE } /************************************************************** * OnPlusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수 * 이 함수에서는 V-Move 를 종료합니다. **************************************************************/ void OnPlusButtonUp () { ecmSxMot_Stop(Device_Info.NetIdx, AXIS0, 0, 0, &Error_Num); } /************************************************************** * OnMinusButtonDown(): (-)Move 버튼이 눌렸을 때 호출되는 가상의 함수 * 이 함수에서 (+)방향으로 V-Move 를 시작합니다. **************************************************************/ void OnMinusButtonDown() { ecmSxMot_VMoveStart(Device_Info.NetIdx, AXIS0, ecmDIR_N, &Error_Num); //Negative dir V-MOVE } /************************************************************** * OnMinusButtonUp() : (-)Move 버튼이 올라올 때 호출되는 가상의 함수 * 이 함수에서는 V-Move 를 종료합니다. **************************************************************/ void OnMinusButtonUp() { ecmSxMot_Stop(Device_Info.NetIdx, AXIS0, 0, 0, &Error_Num); }